' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2023.12.16.16.28]) on 2023.12.29 at 19:58 (Coordinated Universal Time)
' Program by Charlie Veniot
'
_ALERT("Scroll wheel forward to increase the size of the shape.\n" + _
"Scroll wheel backward to decrease the size of the shape.\n"+ _
"Click on the screen to move the shape that direction.\n"+ _
"The shape's outer edges cannot go beyond the edges of the screen." )
' 🟢 INITIALIZATION
E% = 200 : E_X% = E% : E_Y% = E%
R% = 50 : RMIN% = 10 : T% = 10 : AINC% = 360
SCREEN _NEWIMAGE(E%*2+1,E%*2+1,12)
' 🟢 MAIN PROGRAM
🔁StartCycle:
GOSUB 🎨_DrawShape
GOSUB 🔆_HandleMouseButton
GOSUB 🛞_HandleMouseWheel
GOTO 🔁StartCycle
' 🟢 SUBROUTINES
🎨_DrawShape:
CLS
CIRCLE (E_X%, E_Y%), R%, , , , ,T
CIRCLE (E_X%, E_Y%), R%+T%+1, , , , ,T
AINC% = AINC%-1 : IF AINC% <= 0 THEN AINC% = 360
FOR A% = 0+AINC% TO 360+AINC% STEP 90
PRESET (E_X%,E_Y%)
DRAW "B TA " + A% + " U" + R%
DRAW "C 15 TA " + A% + " U" + T%
NEXT A%
C% = 14
FOR A% = 45+AINC% TO 405+AINC% STEP 90
PRESET (E_X%,E_Y%)
DRAW "B TA " + A% + " U" + INT((R% + 2))
PAINT (POINT(0),POINT(1)), C%, 15
C% = IFF(C%=14,1,14)
NEXT A%
_DISPLAY
RETURN
🔆_HandleMouseButton:
IF _MOUSEBUTTON _
THEN
IF E_X% <> _MOUSEX _
THEN E_X% = E_X% _
+ IFF(_MOUSEX > E_X%, _
IFF( [E_X%+R%+T%+5] < XMAX, 1, 0), _
IFF( [E_X%-R%-T%-5] > 0, -1, 0 ) )
IF E_Y% <> _MOUSEY _
THEN E_Y% = E_Y% _
+ IFF(_MOUSEY > E_Y%, _
IFF( [E_Y%+R%+T%+5] < YMAX, 1, 0), _
IFF( [E_Y%-R%-T%-5] > 0, -1, 0 ) )
END IF ' _MOUSEBUTTON
RETURN
🛞_HandleMouseWheel:
MW% = _MOUSEWHEEL
IF MW% < 0 AND E_X%>=0+R%+T%+5 AND E_Y%>=0+R%+T%+5 AND E_X%<=XMAX-R%-T%-5 AND E_Y%<=YMAX-R%-T%-5 THEN R% = R% + 5
IF MW% > 0 THEN R% = MAX(R% - 5, RMIN%)
RETURN